package com.letsiot.applications.repository;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import com.letsiot.applications.entity.SysOperatorLog;
import com.letsiot.applications.entity.enums.OperatorType;
import com.letsiot.applications.entity.vo.ContainerOpeartionTableVO;
import com.letsiot.applications.entity.vo.ResgistryOpeartionTableVO;

@Repository
public interface SysOperatorLogMapper {

    int deleteByPrimaryKey(Long id);

    int insert(SysOperatorLog record);

    int insertSelective(SysOperatorLog record);

    SysOperatorLog selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(SysOperatorLog record);

    int updateByPrimaryKeyWithBLOBs(SysOperatorLog record);

    int updateByPrimaryKey(SysOperatorLog record);

    List<SysOperatorLog> getAll();

    Page<SysOperatorLog> getOperatorLog(@Param("startDate") Date startDate, @Param("endDate") Date endDate,
            @Param("operatorType") OperatorType operatorType, @Param("userId") Long userId, Pageable pageable);

    Page<ResgistryOpeartionTableVO> registryOperationPage(Pageable pageable, @Param("messageType") String messageType,
            @Param("operationLogOrOperationName") String operationLogOrOperationName,
            @Param("startDate") Date startDate, @Param("endDate") String endDate, @Param("remark") String remark);

    Page<ContainerOpeartionTableVO> containerOperationPage(Pageable pageable,
            @Param("operationLogOrOperationName") String operationLogOrOperationName,
            @Param("startDate") Date startDate, @Param("endDate") String endDate, @Param("remark") String remark);
}